package org.javahispano.javacup.tacticas_aceptadas.FGR.javacup2009.gallegux.javacup2009.canelaenrama;

import org.javahispano.javacup.modelo.Constantes;
import org.javahispano.javacup.modelo.Posicion;

public class PosicionBalon 
{
	
	//int iteracion;
	private double x, y, z;
	boolean golFavor = false, golContra = false;
	
	
	public PosicionBalon(double x, double y, double z)
	{
		this.x = x;
		this.y = y;
		this.z = z;
	}
	
	
	public PosicionBalon(Posicion pos)
	{
		this(pos.getX(), pos.getY(), 0);
	}
	
	
	public PosicionBalon(Posicion pos, double altura)
	{
		this(pos.getX(), pos.getY(), altura);
	}
	
	
//	public PosicionBalon(int iteracion, double x, double y, double z)
//	{
//		//this.iteracion = iteracion;
//		this.x = x;
//		this.y = y;
//		this.z = z;
//	}
	
	
	public Posicion getPosicion()
	{
		return new Posicion(x,y);
	}
	
	
	/**
	 * devuelve si la pelota la puede jugar un jugador de campo
	 * @return
	 */
	public boolean isJugable()
	{
		return z <= Constantes.ALTURA_CONTROL_BALON;
	}
	
	
	
	public boolean isDentroCampo()
	{
		return Util.estaEnCampo(getPosicion());
	}
	
	
	public double getX() {
		return x;
	}


	public double getY() {
		return y;
	}


	public double getZ() {
		return z;
	}


	public boolean isGolFavor() {
		return golFavor;
	}


	public void setGolFavor(boolean gol) {
		this.golFavor = gol;
	}


	
	public boolean isGolContra() {
		return golContra;
	}


	public void setGolContra(boolean gol) {
		this.golContra = gol;
	}


	
	/**
	 * devuelve si la pelota la puede coger el portero
	 * @return
	 */
	public boolean isParablePortero()
	{
		return z <= Constantes.ALTO_ARCO;
	}
	
	
//	public int getIteracion() {
//		return iteracion;
//	}
//
//
//	public void setIteracion(int iteracion) {
//		this.iteracion = iteracion;
//	}


	public String toString()
	{
		return /*iteracion + */"(" + Util.toString(x) + " , " + Util.toString(y) + " , " + Util.toString(z) + " )" +
			"  g+=" + golFavor + " g-=" + golContra;
	}
	
	
	public String toStringPosicion()
	{
		return /*iteracion + */"(" + Util.toString(x) + " , " + Util.toString(y) + " , " + Util.toString(z) + " )";
	}
	
	
	public static boolean isParablePortero(double altura)
	{
		return altura <= Constantes.ALTO_ARCO;
	}


	public static boolean isJugable(double altura)
	{
		return altura <= Constantes.ALTURA_CONTROL_BALON;
	}


	
}
